哈囉大家好今天我們來示範簡單的CheckBox,CheckBox是一種多選選項的按鈕,通常我們會一次放很多CheckBox在布局中,那我今天會先示範單選的CheckBox,那一樣先上程式碼。
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<CheckBox
android:id="@+id/checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="是否打勾?"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btn_isCheck"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="將CheckBox打勾"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/checkBox" />
<Button
android:id="@+id/btn_cancelCheck"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="將CheckBox取消打勾"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btn_isCheck" />
</androidx.constraintlayout.widget.ConstraintLayout>
由於我們今天只先示範單選的CheckBox,所以在佈局中只放了一個CheckBox,然後兩個按鈕一個是負責將CheckBox打勾,另一個是將CheckBox取消打勾。
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
CheckBox checkBox;
Button isCheck,canaelCheck;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
checkBox = findViewById(R.id.checkBox);
checkBox.setOnCheckedChangeListener(checkBoxOnCheckChange);
isCheck = findViewById(R.id.btn_isCheck);
canaelCheck = findViewById(R.id.btn_cancelCheck);
isCheck.setOnClickListener(this);
canaelCheck.setOnClickListener(this);
}
private CompoundButton.OnCheckedChangeListener checkBoxOnCheckChange = new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked)
{
Toast.makeText(getApplicationContext(),"已打勾",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getApplicationContext(),"打勾已經被取消",Toast.LENGTH_SHORT).show();
}
}
};
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn_isCheck:
if (checkBox.isChecked()){
Toast.makeText(getApplicationContext(),"CheckBox已經被勾選了",Toast.LENGTH_SHORT).show();
}else {
checkBox.setChecked(true);
}
break;
case R.id.btn_cancelCheck:
if (!checkBox.isChecked()){
Toast.makeText(getApplicationContext(),"CheckBox已經取消勾選了",Toast.LENGTH_SHORT).show();
}else{
checkBox.setChecked(false);
}
break;
}
}
}
在一開始先宣告了一個CheckBox,在程式碼中有個.setOnCheckedChangeListener是用來監聽CheckBox是否有勾選,在程式碼裡面當有勾選時會顯示一個"已勾選"的Toast,當取消勾選時會顯示一個"打勾已被取消"的Toast。
當"將CheckBox打勾"按鈕點擊時會使用setChecked(true)將CheckBox打勾,反之當"將CheckBox取消打勾"被點擊時會將CheckBox取消勾選狀態。
然後在裡面我還有做一個提醒的動作,當CheckBox原本是勾選狀態時點擊"將CheckBox打勾"按鈕會出現Toast提示CheckBox已經被勾選了,反之則是會提示CheckBox已經取消勾選了。
那今天就示範道這了,謝謝大家的觀看。